package com.itheima.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @作者 itcast
 * @创建日期 2020/11/4 10:12
 **/
public class MqProducer {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1. 创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 设置连接参数
        connectionFactory.setHost("localhost");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("mrchen");
        connectionFactory.setPassword("mrchen");
        connectionFactory.setVirtualHost("/itcast");
        // 2. 连接工厂获取一个新的连接
        Connection connection = connectionFactory.newConnection();
        // 3. 创建信道对象
        Channel channel = connection.createChannel();
        // 4. 用信道对象创建队列
        /**
         * queue: * 队列的名称
         * durable: * 是否持久化
         * exclusive: 是否独占该队列
         * autoDelete: 是否自动删除(当所有连接断开后， true自动删除队列)
         * args :  其它队列参数
         */
        channel.queueDeclare("hello",true,false,false,null);
        // 5. 使用信道对象向hello队列发送消息
        String message = "1";
        /**
         * exchange: * 交换机  传"" 使用默认交换机
         * routingkey: * 路由字符串
         * mandatory: true:没有队列接收 消息会返回  false: 消息会丢弃
         * immediate: true: 队列没有消费者 消息会返回 false: 不会返还
         * props: 消息的属性
         * body: * 消息内容
         */
        channel.basicPublish("","hello",true,false, MessageProperties.PERSISTENT_BASIC,message.getBytes());
        System.out.println("消息发送成功==>"+message);
        // 6. 关闭和信道和连接对象
        channel.close();
        connection.close();

    }
}
